home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
BBS Toolkit
/
BBS Toolkit.iso
/
rbbs_pc
/
usemall.zip
/
USEMALL.BAS
< prev
next >
Wrap
BASIC Source File
|
1988-03-02
|
7KB
|
242 lines
DIM ARG$(10)
CLINE$= COMMAND$
PRINT" ╔═════════════════════════════════════════════════════╗
PRINT" ║ Use `em ALL -- USEMALL.EXE -- a quick utility ║
PRINT" ║ to run PCBoard DOORS under any version of ║
PRINT" ║ RBBS that creates a DORINFOx.DEF file ║
PRINT" ║ [RBBS15.1c and above] ║
PRINT" ║ ║
PRINT" ║ 3 [OPTIONAL] parameters on command line: ║
PRINT" ║ ║
PRINT" ║ param 1 -- node # -- IF NOT USED, "1" assumed ║
PRINT" ║ param 2 -- FULL PATH/FILENAME for MESSAGES ║
PRINT" ║ if not specified, then MESSAGES is ║
PRINT" ║ assumed as file name, in current ║
PRINT" ║ directory. TO SPECIFY PARAM 2, PARAM ║
PRINT" ║ #1 MUST ALSO BE SPECIFIED ║
PRINT" ║ param 3 -- TIME ALLOWED IN DOOR. IF NOT ║
PRINT" ║ SPECIFIED, default is 30 minutes. ║
PRINT" ║ TO SPECIFY PARAM 3, PARAMs #1 & 2 ║
PRINT" ║ MUST ALSO BE SPECIFIED - see docs ║
PRINT" ║ ║
PRINT" ║ a PHIL DeWITT & STEVEN KLING production ║
PRINT" ╚═════════════════════════════════════════════════════╝
' DORINFOx.DEF is required in the current directory
'
'
' The program (if successful) will create PCBOARD.SYS and PCBOARD.DAT
' in the current directory - user must then copy to where-ever needed.
'
' If user exited towards door, while connected EVEN parity, program
' will NOT create either file - batch file can then test for their
' existence for either return to RBBS (user will have been told the
' problem) or may continue on. For example:
'
' IF EXIST PCBOARD.SYS DELETE PCBOARD.SYS
' USEMALL %1 C:\RBBS\JUNK\MESSAGES -10
' IF EXIST PCBOARD.SYS GOTO OK
' GOTO END
' :OK
' (whatever it takes to copy files, move to new dir, etc.)
' :END
'
'
' If no command line arguments, then defaults are:
' node 1
' MESSAGES (or a useable portion of it) in current directory
' Time allowed in door = 30 minutes
'
' If time allowed is specified as 0 (zero) then time allowed
' will be equal to time remaining
'
' If time allowed is specified as a NEGATIVE number, then time
' allowed will be set to time remaining or parameter #3, if
' greater [when converted to positive #]. Thus, you could
' allow someone into a door giving them [say] 10 minutes, even
' though they only had 3 minutes left when exiting from RBBS.
IF LEN(CLINE$)<1 THEN
RD$="1"
NODE.RECORD.IN.MESSAGES.FILE=2
MESSAGE.FILE$="MESSAGES"
TIME.TO.PLAY=30
GOTO 2
END IF
I=1:NUM=1:INWORD=-1:LENGTH=LEN(CLINE$)
WHILE I <= LENGTH
CH$=MID$(CLINE$,I,1)
IF CH$<>" " THEN
IF NOT INWORD THEN INWORD=-1
ARG$(NUM)=ARG$(NUM)+CH$
ELSEIF INWORD THEN
NUM=NUM+1
INWORD=FALSE
END IF
I=I+1
WEND
IF NUM>3 THEN
PRINT "ERROR IN COMMAND LINE - TOO MANY ARGUMENTS"
END
END IF
RD$=ARG$(1)
IF LEN(RD$)>1 OR VAL(RD$)>9 OR VAL(RD$)<0 THEN
PRINT "ERROR IN COMMAND LINE - ARGUMENT 1 [NODE #] OUT OF RANGE"
END
END IF
RD=VAL(RD$): IF RD=0 THEN RD=10
NODE.RECORD.IN.MESSAGES.FILE=RD+1
IF NUM>1 THEN MESSAGE.FILE$=ARG$(2)
IF NUM=3 THEN TIME.TO.PLAY=VAL(ARG$(3))
2 OPEN MESSAGE.FILE$ FOR RANDOM AS #1 LEN = 128
FIELD 1, 128 AS Z$
GET 1, NODE.RECORD.IN.MESSAGES.FILE
PAGEBEL = VAL(MID$(Z$, 34, 2))
SYSOP.NEXT = VAL(MID$(Z$, 36, 2))
PRINTER = VAL(MID$(Z$, 38, 2))
RELIABLE.MODE = VAL(MID$(Z$, 91, 2))
E.T.D = VAL(MID$(Z$, 86, 5))
GRP = VAL(MID$(Z$, 53, 2))
SNOOP = VAL(MID$(Z$, 58, 2))
CLOSE 1
OPEN "DORINFO" + RD$ + ".DEF" FOR INPUT AS #2
LINE INPUT #2,RBBS.NAME$
LINE INPUT #2,SYSOP.FIRST$
LINE INPUT #2,SYSOP.LAST$
LINE INPUT #2,COM.PORT$
LINE INPUT #2,BAUD.PARITY$
LINE INPUT #2,NETWORK.TYPE$
LINE INPUT #2,FIRST$
LINE INPUT #2,LAST$
LINE INPUT #2,CITY.STATE$
LINE INPUT #2,GR$
LINE INPUT #2,SECURITY$
LINE INPUT #2,TIME.REMAINING$
CLOSE 2
GR = VAL(GR$)
GRAPHICS$="0 ":IF GR=2 THEN GRAPHICS$="-1"
TIME.REMAINING! = VAL(TIME.REMAINING$)
SECURITY = VAL(SECURITY$)
BAUD.PARITY$=BAUD.PARITY$+" "
BAUD$=LEFT$(BAUD.PARITY$,4)
IF VAL(BAUD$)<300 THEN BAUD$="LOCA"
USER.NAME$=FIRST$+" "+LAST$+ " "
IF LEN(USER.NAME$)>27 THEN USER.NAME$=LEFT$(USER.NAME$,25)+" "
IF INSTR(BAUD.PARITY$,",") THEN
PARITY$=RIGHT$(BAUD.PARITY$,10)
PARITY$=LEFT$(PARITY$,6) ' TAKING ADDED SPACES OUT
END IF
NETWORK.TYPE = VAL(NETWORK.TYPE$)
TIME.REMAINING! = TIME.REMAINING * 60
IF INSTR(PARITY$, "E") THEN
LN$ = "You must set your modem parameters at N-8-1 to access this door!"
PRINT LN$
OPEN COM.PORT$+":"+BAUD$+PARITY$+",CS,DS,CD" FOR RANDOM AS #3
PRINT #3, LN$
CLOSE
END
END IF
OPEN "PCBOARD.SYS" FOR RANDOM AS #4 LEN = 128
FIELD #4, 2 AS DISPLAY.ON.OR.OFF.RBBS.SNOOP$, _
2 AS PRINTER.ON.OR.OFF$, _
2 AS PAGE.BELL.ON.OR.OFF$, _
2 AS CALRAMF$, _
2 AS SYSNXTF$, _
4 AS CONNECT.RATE.OF.CALLER$, _
27 AS NAME.OF.CALLER$, _
15 AS FIRSTF$, _
2 AS GRAPHF$, _
12 AS PWFILLF$, _
2 AS RECNOF$, _
4 AS WHEN.LOGGED.ON.SET.TO.NOW$, _
4 AS ALLOWED.TIME.FOR.USER.IN.DOOR$, _
4 AS TIME.USER.ENTERED.DOOR.SET.TO.NOW$, _
5 AS TIME.USER.ENTERED.DOOR.HH.MM.FORMAT$, _
2 AS UCCONFF$, _
18 AS CONFLGF$, _
2 AS UCATMINF$, _
8 AS DLBYTEF$, _
2 AS UUTCMINF$, _
4 AS LNGVERSF$, _
2 AS ECMODEMF$, _
1 AS NCHTPXF$
GET #4, 1
LSET DISPLAY.ON.OR.OFF.RBBS.SNOOP$ = STR$(SNOOP)
LSET PRINTER.ON.OR.OFF$ = STR$(PRINTER)
LSET PAGE.BELL.ON.OR.OFF$ = STR$(PAGEBEL)
LSET CALRAMF$ = STR$(0)
LSET SYSNXTF$ = STR$(SYSOP.NEXT)
LSET CONNECT.RATE.OF.CALLER$ = BAUD$
LSET NAME.OF.CALLER$ = USER.NAME$
LSET FIRSTF$ = FIRST$
LSET GRAPHF$ = GRAPHICS$
LSET PWFILLF$ = SPACE$(12)
LSET RECNOF$ = MKI$(2)
CURRENT.SEC = TIMER
LSET WHEN.LOGGED.ON.SET.TO.NOW$ = MKS$(CURRENT.SEC)
IF TIME.TO.PLAY=0 THEN PLAYING.TIME=TIME.REMAINING!
IF TIME.TO.PLAY<0 THEN
TIME.TO.PLAY = TIME.TO.PLAY * -60.
IF TIME.TO.PLAY < TIME.REMAINING! THEN TIME.TO.PLAY=TIME.REMAINING!
PLAYING.TIME=TIME.TO.PLAY
TIME.TO.PLAY=0
END IF
IF TIME.TO.PLAY>0 THEN PLAYING.TIME=TIME.TO.PLAY*60.
LSET ALLOWED.TIME.FOR.USER.IN.DOOR$ = MKS$(PLAYING.TIME)
LSET TIME.USER.ENTERED.DOOR.SET.TO.NOW$ = MKS$(CURRENT.SEC)
LSET TIME.USER.ENTERED.DOOR.HH.MM.FORMAT$ = LEFT$(TIME$, 5)
LSET UCCONFF$ = MKI$(0)
LSET CONFLGF$ = SPACE$(18)
LSET UCATMINF$ = MKI$(0)
LSET DLBYTEF$ = SPACE$(8)
LSET UUTCMINF$ = MKI$(0)
LSET LNGVERSF$ = SPACE$(4)
LSET ECMODEMF$ = STR$(RELIABLE.MODE)
LSET NCHTPXF$ = " "
PUT #4, 1
CLOSE #4
OPEN "PCBOARD.DAT" FOR OUTPUT AS #4
PRINT #4, " *** A DUMB REMARK LINE *** "
FOR PCBLINES = 1 TO 20
PRINT #4, "Z,";
NEXT
PRINT #4,"USERS,";
FOR PCBLINES = 1 TO 13
PRINT #4,"Z,";
NEXT
PRINT #4, ".\,";
FOR PCBLINES = 1 TO 7
PRINT #4, "Z,";
NEXT
PRINT #4, COM.PORT$;",";
IF VAL(BAUD$)<300 THEN BAUD$="2400"
PRINT #4, BAUD$;",";
FOR PCBLINES = 1 TO 49
PRINT #4, "Z,";
NEXT
PRINT #4, RD$+",Zend"
CLOSE
END